昨天很累所以跑去睡覺了,這就是棄賽人才能有的權利(誤)
下方程式碼片段全部都是擷取自 Secure Code Warrior 線上安全程式培訓平台,因為練習互動時的題目多半不會只有單一個檔案,可能涉及多個檔案、資料夾及多處地方修改,因此我的文章主要是針對最主要的區塊做修改及說明,若有不好理解的地方非常抱歉也還請見諒,也可以實際上去 Secure Code Warrior 玩玩看,搭配著互動,會更有感的學習哦~
std::cout << "Error while reading file." << dbMessages <<std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
錯誤訊息顯示檔案所在的完整路徑,暴露了有關關鍵系統檔案位置的敏感資訊。它使潛在攻擊者更容易找到這些檔案並使用或損壞它們。
把原程式碼 dbMessages 拿掉就好了
解釋:
不要暴露檔案路徑
std::cout << "SQL query failed: " << query << ".\t" << std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
和
std::cout << "Error record processing: " << account->getValues() << std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
顯示SQL query或使用者帳戶詳細資訊等資料可能會將敏感資訊暴露給惡意行為者。
把query改成error
account->getValues()改成i
(這邊的i是account的個數,錯誤訊息回傳第幾個account)
解釋:
使用通用錯誤訊息,不透露特定細節,如SQL查詢或使用者帳戶資訊。安全地記錄錯誤以進行除錯,同時保護敏感資訊。
parser_error(const std::string & line)
: std::runtime_error("Couldn't parse line '" + line + "'")
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
throw parser_error(line);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
當解密行解析失敗時,程式會回傳一個包含解密行的異常。當在例外情況下被呼叫,它將輸出此行,導致危險的資訊暴露。
把
parser_error(const std::string & line)
: std::runtime_error("Couldn't parse line '" + line + "'")
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
中印出的line刪掉
以及加入變數line_nr
,之後印出line_nr值而非line的值
int line_nr = 1;
throw parser_error(line_nr);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
透過僅列印錯誤訊息而不輸出任何未加密資料來充分描述錯誤。